#include "messageHandle.h"
#include "stdShared.h"


/* 构造函数 */
MessageHandle::MessageHandle(const StdTcpSocketPtr & client):m_chatroom(client)
{
    /* 函数注册表 */
    m_handles[REGISTER] = [this](const string & msg) {m_chatroom.handleRegisterInfo(msg);};
    /* 函数注册表 */
    m_handles[LOGIN] = [this](const string & msg) {m_chatroom.handleLoginInfo(msg);};
    m_handles[FRIEND_REQUEST] = [this](const string & msg) {m_chatroom.handleFriendRequest(msg);};
    m_handles[FRIEND_RESULT] = [this](const string & msg) {m_chatroom.handleFriendResult(msg);};

}

/* 析构函数 */
MessageHandle::~MessageHandle()
{

}

/* 处理信息 */
void MessageHandle::handleMessage(const string &msg)
{
    /* 将json字符串解析为json对象 */
    int type = 0;
    json_object * jsonObj = json_tokener_parse(msg.c_str());
    if(jsonObj != NULL)
    {
        type = json_object_get_int(json_object_object_get(jsonObj, "type"));
    }

    auto iter = m_handles.find(type);
    if(iter != m_handles.end())
    {
        /* 执行回端 */
        iter->second(msg);
    }
    else
    {
        /* 处理位置的信息类型 */
        cout << "unknown message type :" << type << endl;
    }
    
    // const char * name = json_object_get_string(json_object_object_get(jsonObj, "name"));
    // const char * passwd = json_object_get_string(json_object_object_get(jsonObj, "passwd"));
        

}
